草庐IT

c - WaitForMultipleObjects 堆栈

全部标签

c# - NullReferenceException,没有堆栈跟踪...从哪里开始?

我有一个WPF音频应用程序。偶尔(甚至在调试器中)我会看到一个NullReferenceException,它不携带任何堆栈跟踪信息。如何开始调试这样的问题?一些背景:我正在P/调用WinMM.dll中的函数,其中涉及注册一个callback调用waveOutOpen时[DllImport("winmm.dll")]publicstaticexternMmResultwaveOutOpen(outIntPtrphwo,IntPtruDeviceID,WaveFmtpwfx,WaveCallbkdwCallback,IntPtrdwInstance,intfdwOpen);事实证明,这很

c# - .net 中的 IL 和堆栈实现?

我写了一个简单的程序来检查IL的工作原理:voidMain(){inta=5;intb=6;if(aIL:IL_0000:ldc.i4.5IL_0001:stloc.0IL_0002:ldc.i4.6IL_0003:stloc.1IL_0004:ldloc.0IL_0005:ldloc.1IL_0006:bge.sIL_0012IL_0008:ldstr"333"IL_000D:callSystem.Console.WriteIL_0012:callSystem.Console.ReadLine我正在尝试了解实现效率:在第1行(IL代码)它将值5压入堆栈(4个字节,即int32)在第2

c# - 将异常冒泡到堆栈顶部是否可以?

让异常冒泡到堆栈顶部而不是在每个方法中捕获它是否可以?..我们应该在任何情况下都这样做吗?..这种方法是否存在任何细微的问题或副作用(例如丢失异常细节、堆栈跟踪或内部异常细节等)?虽然我的问题很笼统,但我目前的情况是这样的:我正在将现有的WSE3Web服务移动到WCF,因此y客户端是WSE3客户端。我添加了一个行为,以便在WCF服务中发生FaultException时,它会被传送到客户端。当OperationContract方法出现异常时,我会在客户端收到异常消息,没有任何问题。但每当它出现在OperationContract以外的方法中时,我都会以某种方式遇到与安全相关的问题。我无法

c# - 如何在不使用循环的情况下将项目从列表复制到堆栈

我确实有一个Stack和一个List。我需要将所有项目从列表复制到堆栈而不使用循环,即for、foreach等。有推荐的方法吗? 最佳答案 您可以从任何IEnumerable对象创建堆栈varmyStack=newStack(myList);参见MSDN:http://msdn.microsoft.com/en-us/library/76atxd68.aspx但是,堆栈构造函数将在内部使用循环,只是您看不到而已。 关于c#-如何在不使用循环的情况下将项目从列表复制到堆栈,我们在Stack

c# - 如何获取堆栈框架的执行对象?

使用反射时,可以使用System.Diagnostics.StackTrace获取调用堆栈(除此之外,由于JIT优化,它可能是粗略的近似值)并检查包含的StackFrame对象。我如何获取对堆栈帧中方法正在其上执行的对象(this指针)的引用?我知道我可以通过在堆栈框架对象上调用GetMethod()来获取MethodBase,但我正在寻找的是与GetObject()类似的东西(如果该方法是静态的,它自然会返回null).似乎只能查询堆栈帧对象以获取静态确定的信息,例如方法信息、原始文件等。VS调试器知道(尽管它可能使用另一种获取调用堆栈跟踪的方法),因为可以双击调用堆栈窗口中的任何堆

c# - 为什么堆栈在 Exception.StackTrace 中被截断?

为什么堆栈的高位部分(在Exception.StackTrace中)被截断?让我们看一个简单的例子:publicvoidExternalMethod(){InternalMethod();}publicvoidInternalMethod(){try{thrownewException();}catch(Exceptionex){//ex.StackTraceheredoesn'tcontainExternalMethod()!}}这似乎是“设计使然”。但是这样奇怪的设计的原因是什么?它只会使调试变得更加复杂,因为在日志消息中我无法理解是谁调用了InternalMethod(),而通常

c# - 对于 C# 日志记录,如何以最小的开销获取调用堆栈深度?

我为Log4net创建了一个包装器(我可能会放弃支持NLog;我还没有决定),并且我缩进记录的消息结果以给出调用结构的想法。例如:2011-04-0300:20:30,271[CT]DEBUG-Merlinia.ProcessManager.CentralThread.ProcessAdminCommand-ProcStart-UserInfoRepository2011-04-0300:20:30,271[CT]DEBUG-Merlinia.ProcessManager.CentralThread.StartOneProcess-UserInfoRepository2011-04-0

c# - 异常堆栈跟踪可以为空吗?

我发现如果我捕获异常e,e.innerException可能为空。在catchblock中的任何可能情况下,e.StackTrace是否也可能为空?try{}catch(Exceptione){//cane.StackTracebenullhere?} 最佳答案 是的。如果您创建一个newException()并且不抛出它,则除Data和Message之外的每个属性都将为null。 关于c#-异常堆栈跟踪可以为空吗?,我们在StackOverflow上找到一个类似的问题:

c# - 使用默认值初始化队列或堆栈?

您可以使用预置值初始化列表:ListL1=newList{1,2,3};Queue是否有与上述等价的东西?我的想法是:QueueQ1=newQueue{1,2,3};这是行不通的。有什么解决方法吗?是QueueQ1=newQueue();Q1.Enqueue(1);Q1.Enqueue(2);Q1.Enqueue(3);唯一有效的解决方案? 最佳答案 使用构造函数QueueConstructor(IEnumerable)QueueQ1=newQueue(new[]{1,2,3});或者Listlist=newList{1,2,3};

c# - 测试 float NaN 会导致堆栈溢出

C#、VS2010我需要确定浮点值是否为NaN。使用NaN测试floatfloat.IsNaN(aFloatNumber)因堆栈溢出而崩溃。也是一样aFloatNumber.CompareTo(float.NaN).以下不会崩溃,但它没有用,因为它无论如何都会返回NaN:aFloatNumber-float.NaN搜索“堆栈溢出”会返回有关此网站的结果,而不是有关实际堆栈溢出的结果,因此我找不到相关答案。为什么我的应用程序在测试NaN时会发生堆栈溢出?编辑:调用堆栈:编辑:这显然是我的代码中的内容:这条语句:boolaaa=float.IsNaN(float.NaN);在应用程序的构造